
//2300.咒语和药水的成功对数
class Solution {
public:
    vector<int> successfulPairs(vector<int>& spells, vector<int>& potions, long long success) {
        //对potions进行排序，使用双指针，potions从小到大
        int n=spells.size(),m=potions.size();
        sort(potions.begin(),potions.end());
        //对spells进行排序，但是要记录下标,spells从大到小
        vector<pair<int,int>> nums;
        for(int i=0;i<n;i++) nums.push_back({spells[i],i});
        sort(nums.begin(),nums.end(),[](pair<int,int> x,pair<int,int> y){return x.first>y.first;});

        vector<int> ret(n);
        int j=0;
        for(int i=0;i<n;i++)
        {
            while(j<m&&(long long)nums[i].first*potions[j]<success) j++;

            ret[nums[i].second]=m-j;
        }
        return ret;
    }
};